home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 / Ham Radio 2000.iso / ham2000 / qex / ultvfo / ad7008v3.asm next >
Assembly Source File  |  1996-03-27  |  20KB  |  727 lines

  1. *THE ULTIMATE VFO  
  2. *ANALOG DEVICES AD7008 DIRECT DIGITAL SYNTHESIS CHIP
  3. *USING THE MOTOROLA MC68HC811E2FN MICROCOMPUTER
  4. *BY DONALD S. KIRK (WD8DSB) 27MR96
  5.         ORG     $F800                                                                          
  6. PORTA   EQU     $1000
  7. PORTB   EQU     $1004
  8. PORTC   EQU     $1003
  9. DDRC    EQU     $1007
  10. PORTD   EQU     $1008
  11. DDRD    EQU     $1009
  12. ADCTL   EQU     $1030   FOR A/D
  13. OPTION  EQU     $1039   FOR A/D
  14. ADR1    EQU     $1031   FOR A/D
  15. ADR2    EQU     $1032   FOR A/D
  16. ADR3    EQU     $1033   FOR A/D
  17. ADR4    EQU     $1034   FOR A/D
  18. CHAR    EQU     $80
  19. TMSK2   EQU     $1024   FOR PULSE ACCUMULATOR
  20. TFLG2   EQU     $1025   FOR PULSE ACCUMULATOR
  21. PACTL   EQU     $1026   FOR PULSE ACCUMULATOR
  22. PACNT   EQU     $1027   FOR PULSE ACCUMULATOR
  23. BPROT   EQU     $1035   EEPROM BLOCK PROTECT
  24. LOBYTE  EQU     $81
  25. TEMP    EQU     $82
  26. PHASE   EQU     $83     PHASE VALUE REGISTERS FOR FREQ0=TX
  27. PHASE1  EQU     $84
  28. PHASE2  EQU     $85
  29. PHASE3  EQU     $86
  30. SERCNT  EQU     $87
  31. HOLD    EQU     $88
  32. HOLD+1  EQU     $89
  33. BYTE    EQU     $8A
  34. BYTE+1  EQU     $8B
  35. BYTE+2  EQU     $8C
  36. BYTE+3  EQU     $8D
  37. BCD     EQU     $8E
  38. BCD+1   EQU     $8F
  39. BCD+2   EQU     $90
  40. BCD+3   EQU     $91
  41. ANS     EQU     $92
  42. ANS+1   EQU     $93
  43. ANS+2   EQU     $94
  44. ANS+3   EQU     $95
  45. BCDCTR  EQU     $96
  46. RATE    EQU     $97
  47. RATE+1  EQU     $98
  48. RATE+2  EQU     $99
  49. RATE+3  EQU     $9A
  50. IF      EQU     $9B
  51. IF+1    EQU     $9C
  52. IF+2    EQU     $9D
  53. IF+3    EQU     $9E
  54. BAND    EQU     $9F                   
  55. BAND+1  EQU     $A0
  56. FREQ    EQU     $A1     FLAG REGISTER FOR FREQ0/FREQ1
  57. PHARX   EQU     $A2     PHASE VALUE REGISTERS FOR FREQ1=RX
  58. PHARX1  EQU     $A3
  59. PHARX2  EQU     $A4
  60. PHARX3  EQU     $A5
  61. RITRAW  EQU     $A6
  62. RITFRQ  EQU     $A7
  63. IFSTAT  EQU     $A8
  64.  
  65. *MAIN        
  66.         LDS     #$00FF  INITIALIZE STACK
  67.         LDAA    #$7F    CONFIG PORT C FOR LCD DISPLAY
  68.         STAA    DDRC
  69.         CLR     DDRD    CONFIG PORT D FOR IF SET AND BAND SELECT INPUTS
  70.         LDAA    #$00
  71.         STAA    BPROT   ENABLE PROGRAMMING OF EEPROM
  72.         LDAA    OPTION  SET A/D POWERUP CONTROL BIT =1
  73.         ORAA    #$80
  74.         STAA    OPTION
  75.         LDAA    #$F0    SET A/D SCAN,MULT,&GROUP
  76.         STAA    ADCTL
  77.         LDAA    #$02    SET DEFAULT I.F. STAT = 2 WHICH IS DIFFERENCE FREQ.
  78.         STAA    IFSTAT  
  79.         LDD     $FFB0  I.F. FREQ STORED IN EEPROM
  80.         STD     IF
  81.         LDD     $FFB2
  82.         STD     IF+2
  83.         JSR     CLRIF   GO TO CLEAR THE I.F. REGISTERS ROUTINE
  84.         LDX     #$FD24  RESET BAND POINTER TO START OF LIST MINUS 4
  85.         STX     BAND
  86.         CLR     PHASE   SET PHASE VALUE EQUAL TO 0 HERTZ
  87.         CLR     PHASE1   
  88.         CLR     PHASE2
  89.         CLR     PHASE3
  90. START   JSR     LCDINT  INITIALIZE DISPLAY
  91. AGAIN   JSR     RATES
  92.         LDAA    PORTA
  93.         BITA    #$01    LOOK FOR UP PUSH BUTTON
  94.         BEQ     LOOP9 
  95.         BITA    #$02
  96.         BEQ     LOOP3   LOOK FOR DOWN PUSH BUTTON
  97.         JSR     SETIF   GO TO THE SET IF REGISTER ROUTINE 
  98.         JSR     BANDS   GO AND PROCESS THE BAND SELECT P.B.
  99. LOOP8   JSR     RX      ROUTINE TO CALCULATE RX FREQ FROM IF FREQ.
  100.         JSR     RIT     ROUTINE TO USE RIT
  101.         LDAA    PHASE
  102.         JSR     SHOW
  103.         LDAA    PHASE1 
  104.         JSR     SHOW
  105.         LDAA    PHASE2
  106.         JSR     SHOW
  107.         LDAA    PHASE3
  108.         JSR     SHOW
  109.         LDAA    IF
  110.         JSR     SHOW
  111.         LDAA    IF+1
  112.         JSR     SHOW
  113.         LDAA    IF+2
  114.         JSR     SHOW
  115.         LDAA    IF+3
  116.         JSR     SHOW
  117.         JSR     SERIAL
  118.         JSR     DIVIDE
  119.         JSR     BCDCON
  120.         JSR     BCDDIS
  121.         JSR     MIXDIS
  122.         JSR     RITBCD  USE BCDDIS AND BORROW ANS REGISTERS FOR RIT DISPLAY
  123.         LDAA    #$80    SEND DISPLAY BACK TO FIRST LOCATION OF ROW 1
  124.         STAA    CHAR
  125.         JSR     CONTRL
  126.         BRA     AGAIN
  127. LOOP9   LDD     PHASE2
  128.         ADDD    RATE+2
  129.         STD     PHASE2
  130.         LDD     PHASE
  131.         BCS     LOOP4
  132. LOOP5   ADDD    RATE
  133.         STD     PHASE
  134.         BRA     LOOP8
  135. LOOP4   ADDD    #$01
  136.         BRA     LOOP5
  137. LOOP3   LDD     PHASE2
  138.         SUBD    RATE+2
  139.         STD     PHASE2
  140.         LDD     PHASE
  141.         BCS     LOOP6
  142. LOOP7   SUBD    RATE
  143.         STD     PHASE
  144.         BRA     LOOP8
  145. LOOP6   SUBD    #$01
  146.         BRA     LOOP7
  147. CLRIF   LDAA    PORTD   LOOK FOR THE IF SET P.B. TO BE PUSHED ON POWER UP
  148.         BITA    #$10
  149.         BEQ     LOOP50
  150.         RTS
  151. LOOP50  CLR     IF
  152.         CLR     IF+1
  153.         CLR     IF+2
  154.         CLR     IF+3
  155.         CLR     IFSTAT  CLEAR THE IF STATUS REGISTER TO SHOW IF NOT SET
  156. LOOP51  LDAA    PORTD   LOOK FOR P.B. TO GO BACK OFF
  157.         BITA    #$10
  158.         BEQ     LOOP51
  159.         RTS
  160. SETIF   LDAA    PORTD   LOOK FOR IF SET P.B. TO BE PUSHED
  161.         BITA    #$10
  162.         BEQ     LOOP52
  163.         RTS
  164. LOOP52  LDAA    IFSTAT  
  165.         BEQ     LOOP60  BRANCH IF IF HAS NOT BEEN SET YET
  166.         BITA    #$01
  167.         BNE     LOOP61  BRANCH BECAUSE IFSTAT IS NOT = 2
  168.         DEC     IFSTAT  MAKE IFSTAT = 1 = SUM
  169. LOOP62  LDAA    PORTD
  170.         BITA    #$10
  171.         BEQ     LOOP62  LOOK FOR P.B. TO GO BACK OFF
  172.         RTS
  173. LOOP61  INC     IFSTAT
  174.         BRA     LOOP62
  175. LOOP60  LDAA    PHASE
  176.         STAA    IF
  177.         LDAA    PHASE1
  178.         STAA    IF+1
  179.         LDAA    PHASE2
  180.         STAA    IF+2
  181.         LDAA    PHASE3
  182.         STAA    IF+3
  183.         LDAA    #$01
  184.         STAA    IFSTAT  PUT A 1 = SUM AND ALSO INDICATES IF HAS BEEN SET
  185.         JSR     LOAD    ROUTINE TO LOAD BURN ROUTINE INTO RAM
  186.         RTS
  187. BANDS   LDAA    PORTD   IS THE BAND SELECT P.B. PUSHED?
  188.         BITA    #$20
  189.         BEQ     LOOP53
  190.         RTS
  191. LOOP53  LDX     BAND    POINTER TO BAND FREQUENCIES
  192.         INX             INCREMENT POINTER TO NEXT BAND
  193.         INX
  194.         INX
  195.         INX
  196.         CPX     #$FD4C  END OF BAND TABLE REACHED?
  197.         BEQ     LOOP54  BRANCH IF YES
  198. LOOP56  STX     BAND
  199.         LDD     00,X
  200.         STD     PHASE
  201.         LDD     02,X
  202.         STD     PHASE2
  203. LOOP55  LDAA    PORTD   LOOK FOR BAND SELECT P.B. TO GO BACK OFF
  204.         BITA    #$20
  205.         BEQ     LOOP55
  206.         RTS
  207. LOOP54  LDX     #$FD28  ROLL BAND POINTER BACK TO THE FIRST LOCATION
  208.         BRA     LOOP56
  209. RX      LDAA    IFSTAT
  210.         BITA    #$02    LOOK FOR IFSTAT TO INDICATE DIFFERENCE NOT SUM
  211.         BNE     RX3     BRANCH IF WE WANT DIFFERENCE FREQ. FOR L.O.
  212.         LDD     PHASE2  CALCULATE THE SUM OF SIGNAL AND I.F.
  213.         ADDD    IF+2
  214.         STD     PHARX2
  215.         BCS     RX1
  216.         LDD     PHASE
  217. RX2     ADDD    IF
  218.         STD     PHARX
  219.         RTS
  220. RX1     LDD     PHASE
  221.         ADDD    #$0001
  222.         BRA     RX2
  223. RX3     LDD     PHASE
  224.         CPD     IF
  225.         BLO     RX4
  226.         CPD     IF
  227.         BEQ     RX5
  228. RX11    LDD     PHASE2
  229.         SUBD    IF+2
  230.         STD     PHARX2
  231.         BCS     RX7
  232.         LDD     PHASE
  233. RX8     SUBD    IF
  234.         STD     PHARX
  235.         RTS
  236. RX5     LDD     PHASE2
  237.         CPD     IF+2
  238.         BLO     RX4
  239.         BRA     RX11
  240. RX7     LDD     PHASE
  241.         SUBD    #$0001
  242.         BRA     RX8
  243. RX4     LDD     IF+2
  244.         SUBD    PHASE2
  245.         STD     PHARX2
  246.         BCS     RX9
  247.         LDD     IF
  248. RX10    SUBD    PHASE
  249.         STD     PHARX
  250.         RTS
  251. RX9     LDD     IF
  252.         SUBD    #$0001
  253.         BRA     RX10
  254. RIT     LDAA    ADR1    GET POT ANALOG VALUE
  255.         LSRA            DIVIDE ANALOG VALUE BY 2 TO GET RID OF NOISE
  256.         STAA    RITRAW
  257.         CMPA    #$40
  258.         BHS     RIT1
  259.         LDAA    #$3F
  260.         SUBA    RITRAW
  261.         STAA    RITRAW
  262.         STAA    RITFRQ
  263.         BEQ     RIT2
  264. RIT3    LDD     PHARX2
  265.         SUBD    #$035B  10HZ PHASE VALUE
  266.         STD     PHARX2
  267.         BCS     RIT4
  268. RIT5    DEC     RITRAW
  269.         BNE     RIT3
  270. RIT2    RTS
  271. RIT4    LDD     PHARX
  272.         SUBD    #$0001
  273.         STD     PHARX
  274.         BRA     RIT5
  275. RIT1    SUBA    #$40
  276.         STAA    RITRAW
  277.         STAA    RITFRQ
  278.         BEQ     RIT6
  279. RIT7    LDD     PHARX2
  280.         ADDD    #$035B  10HZ PHASE VALUE
  281.         STD     PHARX2
  282.         BCS     RIT8
  283. RIT9    DEC     RITRAW
  284.         BNE     RIT7
  285. RIT6    RTS
  286. RIT8    LDD     PHARX
  287.         ADDD    #$0001
  288.         STD     PHARX
  289.         BRA     RIT9
  290. RITBCD  LDAA    RITFRQ
  291.         LDAB    #$0A    MULTIPLY RITFRQ TO GET RIT FREQUENCY IN HERTZ
  292.         MUL
  293.         STD     ANS+2
  294.         CLR     ANS
  295.         CLR     ANS+1
  296.         JSR     BCDCON
  297.         LDAA    #$CC    SEND DISPLAY TO 2 ROW LOCATION 13
  298.         STAA    CHAR
  299.         JSR     CONTRL
  300.         LDAA    BCD+2
  301.         JSR     SHOW
  302.         LDAA    BCD+3
  303.         JSR     SHOW
  304.         RTS
  305. MIXDIS  LDAA    #$C9    SEND DISPLAY TO SECOND ROW LOCATION 10
  306.         STAA    CHAR
  307.         JSR     CONTRL
  308.         LDAA    IFSTAT
  309.         BITA    #$01
  310.         BNE     MIX1    BRANCH IF WE ARE DOING THE SUM        
  311.         LDAA    #$20    BLANK DISPLAY CHARACTER
  312.         STAA    CHAR
  313.         JSR     DISLET
  314.         RTS
  315. MIX1    LDAA    #$5E    DISPLAY CHARACTER ^ TO SHOW MIXER IS SUMMING
  316.         STAA    CHAR
  317.         JSR     DISLET
  318.         RTS
  319. SERIAL  CLR     FREQ    FREQ0/FREQ1 FLAG. 0=FREQ0=TX,1=FREQ1=RX REGISTERS
  320.         LDAA    PORTB
  321.         ANDA    #$DF    SET TC0=0=FREQ0=TX FREQ
  322.         STAA    PORTB
  323. SER     LDAA    #$20    ROUTINE TO SEND DELTA PHASE TO AD7008 SERIAL
  324.         STAA    SERCNT
  325.         LDAA    FREQ
  326.         BNE     SER1
  327.         LDD     PHASE
  328. SER2    STD     HOLD
  329. LOOP10  LDD     HOLD
  330.         ASLD
  331.         BCS     LOOP11
  332.         STD     HOLD
  333.         LDAA    PORTB
  334.         ANDA    #$BF    SDATA LINE=0
  335.         STAA    PORTB
  336.         BRA     LOOP12
  337. LOOP11  STD     HOLD
  338.         LDAA    PORTB
  339.         ORAA    #$40    SDATA LINE=1
  340.         STAA    PORTB
  341. LOOP12  ORAA    #$80    BRING SCLK LINE HIGH
  342.         STAA    PORTB
  343.         ANDA    #$7F    BRING SCLK LINE LOW
  344.         STAA    PORTB
  345.         DEC     SERCNT
  346.         LDAA    SERCNT
  347.         CMPA    #$10    DONE PROCESSING FIRST 16 BITS?
  348.         BEQ     LOOP13
  349.         CMPA    #$00    DONE PROCESSING ALL 32 BITS?
  350.         BEQ     LOOP14
  351.         BRA     LOOP10
  352. LOOP13  LDAA    FREQ
  353.         BNE     SER3
  354.         LDD     PHASE2
  355. SER4    STD     HOLD
  356.         BRA     LOOP10
  357. LOOP14  LDAA    PORTB
  358.         ORAA    #$10    BRING LOAD LINE HIGH 
  359.         STAA    PORTB
  360.         ANDA    #$EF    BRING LOAD LINE LOW
  361.         STAA    PORTB
  362.         LDAA    FREQ
  363.         BEQ     SER5
  364.         RTS
  365. SER1    LDD     PHARX
  366.         BRA     SER2
  367. SER3    LDD     PHARX2
  368.         BRA     SER4
  369. SER5    INC     FREQ
  370.         LDAA    PORTB
  371.         ORAA    #$20
  372.         STAA    PORTB
  373.         BRA     SER
  374.  
  375. DIVIDE  LDD     #$0000  CLEAR ANSWER REGISTER
  376.         STD     ANS
  377.         STD     ANS+2
  378.         LDD     PHASE    TRANSFER PHASE VALUE INTO WORKING BYTE REGISTERS
  379.         STD     BYTE
  380.         LDD     PHASE2
  381.         STD     BYTE+2
  382.         LDX     #$FD00
  383. LOOP21  LDD     BYTE
  384.         CPD     00,X
  385.         BHI     LOOP22
  386.         BEQ     LOOP23
  387. LOOP15  LDAB    #$08
  388.         ABX
  389.         CPX     #$FD28  DONE CONVERTING PHASE TO FREQ?
  390.         BNE     LOOP21
  391.         LDAA    #$C0    SEND DISPLAY TO FIRST LOCATION OF ROW 2
  392.         STAA    CHAR
  393.         JSR     CONTRL
  394.         RTS
  395. LOOP22  LDD     BYTE+2
  396.         SUBD    02,X
  397.         BCS     LOOP25
  398.         STD     BYTE+2
  399. LOOP26  LDD     BYTE
  400.         SUBD    $00,X
  401.         STD     BYTE
  402.         LDD     ANS+2
  403.         ADDD    $06,X
  404.         STD     ANS+2
  405.         BCS     LOOP27
  406. LOOP28  LDD     ANS
  407.         ADDD    $04,X
  408.         STD     ANS
  409.         BRA     LOOP21
  410. LOOP25  STD     BYTE+2
  411.         LDD     BYTE
  412.         SUBD    #$01
  413.         STD     BYTE
  414.         BRA     LOOP26
  415. LOOP27  LDD     ANS
  416.         ADDD    #$0001
  417.         STD     ANS
  418.         BRA     LOOP28
  419. LOOP23  LDD     BYTE+2
  420.         CPD     $02,X
  421.         BHS     LOOP22
  422.         BRA     LOOP15
  423. BCDCON  LDX     #BCD
  424.         CLR     03,X
  425.         CLR     02,X
  426.         CLR     01,X
  427.         CLR     00,X
  428.         LDAA    #$20
  429.         STAA    BCDCTR
  430. L20     LDAA    03,X
  431.         BSR     CALC
  432.         STAB    03,X
  433.         LDAA    02,X
  434.         BSR     CALC
  435.         STAB    02,X
  436.         LDAA    01,X
  437.         BSR     CALC
  438.         STAB    01,X
  439.         LDAA    00,X
  440.         BSR     CALC
  441.         STAB    00,X
  442.         ASL     07,X
  443.         ROL     06,X
  444.         ROL     05,X
  445.         ROL     04,X
  446.         ROL     03,X
  447.         ROL     02,X
  448.         ROL     01,X
  449.         ROL     00,X
  450.         DEC     BCDCTR
  451.         BNE     L20
  452.         RTS
  453. CALC    TAB
  454.         ANDA    #$0F
  455.         SUBA    #$05
  456.         BMI     L14
  457.         ADDB    #$03
  458. L14     TBA
  459.         ANDA    #$F0
  460.         SUBA    #$50
  461.         BMI     L15
  462.         ADDB    #$30
  463. L15     RTS
  464. RATES   LDAA    PORTA
  465.         BITA    #$04    LOOK FOR 10 HERTZ PER STEP INPUT
  466.         BEQ     LOOP40
  467.         LDAA    PORTA
  468.         BITA    #$80    LOOK FOR .1 MHZ PER STEP INPUT
  469.         BEQ     LOOP41
  470.         LDD     #$01    SET RATE FOR 1000 HERTZ PER STEP
  471.         STD     RATE
  472.         LDD     #$4F8B
  473.         STD     RATE+2
  474.         RTS
  475. LOOP40  LDD     #$00    SET RATE FOR 10 HERTZ PER STEP
  476.         STD     RATE
  477.         LDD     #$035B
  478.         STD     RATE+2
  479.         RTS
  480. LOOP41  LDD     #$83    SET RATE FOR .1 MHZ PER STEP
  481.         STD     RATE
  482.         LDD     #$126E
  483.         STD     RATE+2
  484.         RTS
  485. BCDDIS  LDAA    BCD
  486.         JSR     SHOW
  487.         LDAA    BCD+1
  488.         JSR     SHOW
  489.         LDAA    BCD+2
  490.         JSR     SHOW
  491.         LDAA    BCD+3
  492.         JSR     SHOW
  493.         RTS
  494. SHOW    STAA    TEMP    TAKES HEX REG. VALUE & CONVERTS TO MSD & LSD
  495.         ANDA    #$F0
  496.         LSRA
  497.         LSRA
  498.         LSRA
  499.         LSRA
  500.         BSR     CONVRT
  501.         LDAA    TEMP
  502.         ANDA    #$0F
  503.         BSR     CONVRT
  504.         RTS
  505. CONVRT  CMPA    #$09    CONVERT FROM HEX TO ASCII VALUE FOR LCD DISPLAY
  506.         BHI     LOOP30  BRANCH WHEN NUMBER GREATER THEN 9
  507.         ADDA    #$30    CONVERT 0 THRU 9 TO ASCII VALUE
  508.         STAA    CHAR
  509.         JSR     DISLET
  510.         RTS
  511. LOOP30  ADDA    #$37    CONVERT A THRU F TO ASCII VALUE
  512.         STAA    CHAR
  513.         JSR     DISLET
  514.         RTS
  515.  
  516. LCDINT  JSR     DELAY
  517.         JSR     DELAY
  518.         JSR     DELAY
  519.         JSR     DELAY
  520.         JSR     DELAY
  521.         LDAA    #$03
  522.         JSR     CSTROB
  523.         JSR     DELAY
  524.         LDAA    #$03
  525.         JSR     CSTROB
  526.         JSR     DELAY
  527.         LDAA    #$03
  528.         JSR     CSTROB
  529.         JSR     DELAY   *MODIFIED WAS BUSY
  530.         LDAA    #$02
  531.         JSR     CSTROB
  532.         JSR     DELAY   *MODIFIED WAS BUSY
  533.         LDAA    #$28
  534.         STAA    CHAR
  535.         JSR     CONTRL
  536.         LDAA    #$0E
  537.         STAA    CHAR
  538.         JSR     CONTRL
  539.         LDAA    #$01
  540.         STAA    CHAR
  541.         JSR     CONTRL
  542.         LDAA    #$06
  543.         STAA    CHAR
  544.         JSR     CONTRL
  545.         RTS
  546. CSTROB  STAA    PORTC
  547.         ORAA    #$40
  548.         STAA    PORTC
  549.         ANDA    #$3F
  550.         STAA    PORTC
  551.         RTS
  552. DELAY   LDX     #$01FF
  553. LOOP1   NOP
  554.         NOP
  555.         NOP
  556.         NOP
  557.         NOP
  558.         DEX
  559.         BEQ     LOOP2
  560.         JMP     LOOP1
  561. LOOP2   RTS
  562. BUSY    LDAA    #$77
  563.         STAA    DDRC
  564. HOP1    LDAA    #$10
  565.         STAA    PORTC
  566.         ORAA    #$40
  567.         STAA    PORTC
  568.         LDAA    PORTC
  569.         ANDA    #$08
  570.         BNE     HOP2
  571.         LDAA    #$10
  572.         STAA    PORTC
  573.         ORAA    #$40
  574.         STAA    PORTC
  575.         ANDA    #$3F
  576.         STAA    PORTC
  577.         LDAA    #$7F
  578.         STAA    DDRC
  579.         RTS
  580. HOP2    LDAA    #$10
  581.         STAA    PORTC
  582.         ORAA    #$40
  583.         STAA    PORTC
  584.         ANDA    #$3F
  585.         STAA    PORTC
  586.         JMP     HOP1
  587. CONTRL  LDAA    CHAR
  588.         ANDA    #$0F
  589.         STAA    LOBYTE
  590.         LDAA    CHAR
  591.         ANDA    #$F0
  592.         LSRA
  593.         LSRA
  594.         LSRA
  595.         LSRA
  596.         STAA    PORTC
  597.         ORAA    #$40
  598.         STAA    PORTC
  599.         ANDA    #$3F
  600.         STAA    PORTC
  601.         LDAA    LOBYTE
  602.         STAA    PORTC
  603.         ORAA    #$40
  604.         STAA    PORTC
  605.         ANDA    #$3F
  606.         STAA    PORTC
  607.         JSR     BUSY
  608.         RTS
  609. DISLET  LDAA    CHAR
  610.         ANDA    #$0F
  611.         STAA    LOBYTE
  612.         LDAA    CHAR
  613.         ANDA    #$F0
  614.         LSRA
  615.         LSRA
  616.         LSRA
  617.         LSRA
  618.         ORAA    #$20
  619.         STAA    PORTC
  620.         ORAA    #$40
  621.         STAA    PORTC
  622.         ANDA    #$3F
  623.         STAA    PORTC
  624.         LDAA    LOBYTE
  625.         ORA     #$20
  626.         STAA    PORTC
  627.         ORAA    #$40
  628.         STAA    PORTC
  629.         ANDA    #$3F
  630.         STAA    PORTC
  631.         JSR     BUSY
  632.         RTS
  633. *PHASE VS FREQ. VALUES FOR CALCULATING FREQ. FROM PHASE VALUE
  634.         ORG     $FD00
  635.         FCB     $05,$1E,$B8,$52 PHASE VALUE FOR 1,000,000.001 HZ
  636.         FCB     $00,$0F,$42,$40 FREQUENCY VALUE FOR 1,000,000 HZ
  637.         FCB     $00,$0D,$6C,$FB PHASE VALUE FOR 10243.0000 HZ
  638.         FCB     $00,$00,$28,$03 FREQUENCY VALUE FOR 10243 HZ
  639.         FCB     $00,$00,$35,$5A PHASE VALUE FOR 159.0000466 HZ
  640.         FCB     $00,$00,$00,$9F FREQUENCY VALUE FOR 159 HZ
  641.         FCB     $00,$00,$03,$5B PHASE VALUE FOR 10.00007615 HZ
  642.         FCB     $00,$00,$00,$0A FREQUENCY VALUE FOR 10 HZ
  643.         FCB     $00,$00,$00,$56 PHASE VALUE FOR 1.001171768 HZ
  644.         FCB     $00,$00,$00,$01 FREQUENCY VALUE FOR 1 HZ
  645. *PHASE VS START OF BAND FOR BAND SELECT P.B.
  646.         ORG     $FD28
  647.         FCB     $09,$37,$4B,$C7 PHASE VALUE FOR 1.8 MHZ 
  648.         FCB     $11,$EB,$85,$20 PHASE VALUE FOR 3.5 MHZ
  649.         FCB     $23,$D7,$0A,$3E PHASE VALUE FOR 7 MHZ
  650.         FCB     $33,$B6,$45,$A3 PHASE VALUE FOR 10.1 MHZ
  651.         FCB     $47,$AE,$14,$7C PHASE VALUE FOR 14 MHZ
  652.         FCB     $5C,$82,$16,$C8 PHASE VALUE FOR 18.068 MHZ
  653.         FCB     $6B,$85,$1E,$BA PHASE VALUE FOR 21 MHZ
  654.         FCB     $7F,$6F,$D2,$23 PHASE VALUE FOR 24.89 MHZ
  655.         FCB     $8F,$5C,$28,$F8 PHASE VALUE FOR 28 MHZ 
  656. *ROUTINE TO LOAD BURN ROUTINE INTO RAM
  657.         ORG     $FD60
  658. LOAD    LDX     #$FD79
  659.         LDY     #$0000
  660. LOAD1   LDAA    00,X
  661.         STAA    00,Y
  662.         INX
  663.         INY
  664.         CPX     #$FDC5  END OF BURN ROUTINE IN EEPROM REACHED?
  665.         BEQ     LOAD2
  666.         BRA     LOAD1
  667. LOAD2   JMP     $0000   JUMP TO BURN ROUTINE IN LOADED IN RAM
  668. *EEPROM BURN ROUTINE THAT MUST BE LOADED INTO RAM BEFORE RUNNING
  669.         ORG     $FD79
  670.         LDX     #$FFB0  EEPROM ROW TO ERASE
  671. ERASE   LDAB    #$0E
  672.         STAB    $103B
  673.         STAB    00,X
  674.         LDAB    #$0F
  675.         STAB    $103B
  676.         BSR     DLY10
  677.         CLR     $103B
  678. BURN    LDX     #$FFB0
  679.         LDY     #$009B  START LOCATION OF IF PHASE VALUE IN RAM
  680. BURN1   LDAA    00,Y
  681.         LDAB    #$02
  682.         STAB    $103B
  683.         STAA    00,X
  684.         LDAB    #$03
  685.         STAB    $103B
  686.         BSR     DLY10
  687.         CLR     $103B
  688.         INX
  689.         INY
  690.         CPY     #$009F
  691.         BNE     BURN1
  692.         RTS
  693. *10 MSEC DELAY SUBROUTINE FOR EEPROM BURNING
  694. DLY10   LDAA    #$06
  695. DLY2    LDAB    #$FF
  696. DLY1    NOP
  697.         NOP
  698.         NOP
  699.         DECB
  700.         BEQ     DLY3
  701.         BRA     DLY1
  702. DLY3    DECA
  703.         BEQ     DLY4
  704.         BRA     DLY2
  705. DLY4    RTS
  706.  
  707.  
  708. *EEPROM STORAGE OF I.F. FREQUENCY PROGRAMMED BY USER USING I.F. PUSH BUTTON
  709.         ORG     $FFB0
  710.         FCB     $00,$00,$00,$00
  711.  
  712. *START UP VECTOR
  713.         ORG     $FFFE
  714.         FCB     $F8,$00
  715.         END
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.                                 
  726.  
  727.